The Session Initiation Protocol (SIP) is a protocol for creating, modifying, and terminating computer network-based communication sessions, such as for an Internet-based telephone call between two or more participants. Since its introduction numerous enhancements to SIP have been proposed, including the SIP Instant Messaging and Presence Leveraging Extensions (SIMPLE) framework in which one or more network entities, such as computer users, create subscriptions on a server, known as a “presence” server, to receive presence information regarding another network entity, referred to as a “presentity.” When a change in the presentity's presence information is detected, such as when the presentity “publishes” such a change to the presence server, SIP is used to send a notification to the subscribers regarding the change.
Further enhancements to SIP, such as those described in RFCs 3857 and 3858 of the Internet Engineering Task Force, provide a mechanism for subscribing to information regarding subscribers to a presentity's presence information. In this context, subscribers to a presentity's presence information are referred to as “watchers,” the information regarding these subscribers is referred to as “watcher information,” and the subscriber to watcher information is referred to as a “watcher information subscriber.” Both presence information and watcher information are preferably maintained in the Extensible Markup Language (XML). The watcher information subscriber may use this information, for example, to detect unauthorized subscriptions for the presentity's presence information.
In a distributed presence server system multiple subscriptions for presence information regarding the same presentity may be handled by more than one presence server simultaneously, such as for the purpose of providing load balancing for SIP messages. Similarly, multiple subscriptions for watcher information for a presentity may be handled by more than one presence server simultaneously, Thus, when a subscription for the presentity's presence information is created or changes its state (e.g., expires) on one presence server, updated watcher information must be sent to all other presence servers that maintain the presentity's watcher information, whereupon the various presence servers may notify the watcher information subscribers of the change. Furthermore, a single subscriber for a presentity's presence information may create multiple subscriptions for the presentity's presence information on multiple servers, such as where one subscription indicates that the presence information be sent to the subscriber's cell phone, and another subscription indicates that the presence information be sent to the subscriber's personal computer. In this scenario, a change in one of the subscriptions does not necessarily mean that the state of the watcher has changed, since the state of other subscriptions by the same subscriber to the same presentity needs to be taken into account. For example, if the subscriber's cell phone subscription expires, but the subscriber's personal computer subscription is still active, the watcher's state is still active, and the watcher information needn't change. Thus, no notification should be sent to watcher information subscribers in this case. If the presence server that manages the cell phone subscription only takes into account the subscriptions that it manages, it would wrongly determine that the watcher's state has changed to “terminated” and would send an incorrect notification to the watcher information subscribers.
Systems and/or methods for sharing and synchronizing watcher information between multiple presence servers that ensures that watcher information subscribers receive correct watcher information would therefore be advantageous.